Una rappresentazione grafica per i nostri dati

Alcune applicazioni necessitano, dopo aver elaborato un certo numero e tipo di dati, di mostrare i risultati ottenuti con l'ausilio di controlli ad alto impatto visivo come i grafici. Esistono numerosi controlli di terze parti che offrono la possibilità di risolvere questo problema, ma con le possibilità che il Framework .NET ci offre, è possibile creare questi controlli personalmente. La procedura allegata, sviluppata in Visual Basic .NET permette la creazione di un controllo per la creazione di semplici grafici, con la possibilità di inserire etichette per ogni punto del grafico, scelta dei colori delle linee, zoom in/out, etc...
Il codice, data la sua prolissità, è presente nel cd-rom allegato alla rivista e/o sul sito web di ioProgrammo (www.ioprogrammo.it) 
Tip fornito dal sig. P.Libro

Come inviare un FAX dal proprio PC

Il codice permette di implementare in una propria applicazione l’invio di documenti es. Word, PDF, Excel (..tutti i documenti stampabili) via fax usando i Fax Services nativi di Windows 2000
Per funzionare ovviamente occorre che sul PC/Server sia installato Microsoft Fax (viene installato automaticamente quando si installa un modem sul sistema) e che dunque esista la stampante Fax e nessun altro software aggiuntivo o a pagamento.
Nell’esempio e’ compreso anche un banale form che permette di specificare il numero del destinatario, il nome del file documento da allegare (*.doc,*.pdf) e l’eventuale cover da allegare. Tale cover page deve essere realizzata con l’apposito cover designer fornito da Microsoft (Start->Impostazioni->Pannello di controllo->Fax->folder “Frontespizi” ->Nuovo)
Il codice è presente in formato sorgente nel cd-rom allegato alla rivista e/o sul sito web di ioProgrammo (www.ioprogrammo.it) 
Tip fornito dal sig. S.Aleotti

Option Explicit

Private Const OF_EXIST = &H4000
Private Const OFS_MAXPATHNAME = 128
Private Const ERROR_FILE_NOT_FOUND = 2&
Private Const HFILE_ERROR = (-1)

Private Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Private Declare Function OpenFile Lib "kernel32" (ByVal lpFileName As String, lpReOpenBuff As OFSTRUCT, ByVal wStyle As Long) As Long
Private Type OFSTRUCT
        cBytes As Byte
        fFixedDisk As Byte
        nErrCode As Integer
        Reserved1 As Integer
        Reserved2 As Integer
        szPathName(OFS_MAXPATHNAME) As Byte
End Type

Public Function FileExists(Path As String) As Boolean
Dim o As OFSTRUCT
Dim i As Integer

o.cBytes = Len(o)

i = OpenFile(Path, o, OF_EXIST)

If (i > HFILE_ERROR) Then
    FileExists = True
Else
    FileExists = (Err.LastDllError <> ERROR_FILE_NOT_FOUND)
End If
Err.Clear
End Function
Public Sub DisabilitaControlli(value As Boolean)
Dim c As Control
    Frame1.Enabled = value
    For Each c In FormMain.Controls
    
    On Error Resume Next
    If (c.Container.Name = Frame1.Name) Then c.Enabled = value
    Err.Clear
    Next
End Sub
Function ComputerName() As String
    Dim buffer As String * 512, length As Long
    length = Len(buffer)
    If GetComputerName(buffer, length) Then
        ComputerName = Left$(buffer, length)
    End If
End Function

Private Sub CHK_COVER_Click()
Dim i As Integer
Dim c As Control

If (CHK_COVER.value = 1) Then
    DisabilitaControlli True
Else
    DisabilitaControlli False
End If
End Sub

Private Sub Command1_Click()

    Dim objFaxServer As Object
    Dim objFaxDoc As Object
    On Error GoTo ErrTrap

    If (RTrim(TXT_SERVER.Text) <= "") Then
        MsgBox "Specificare il server", vbCritical Or vbOKOnly, Caption
        TXT_SERVER.SetFocus
        Exit Sub
    End If
    If (RTrim(TXT_FILE.Text) <= "" Or Not FileExists(TXT_FILE.Text)) Then
        MsgBox "Specificare il nome dell'alegato (Pdf/Word)", vbCritical Or vbOKOnly, Caption
        TXT_FILE.SetFocus
        Exit Sub
    End If
    
    If (RTrim(TXT_NUMERO.Text) <= "") Then
        MsgBox "Specificare il numero telefono", vbCritical Or vbOKOnly, Caption
        TXT_NUMERO.SetFocus
        Exit Sub
    End If
    
    If (CHK_COVER.value = 1) Then
        If (RTrim(TXT_COVER.Text) <= "" Or Not FileExists(TXT_COVER.Text)) Then
            MsgBox "Specificare una cover", vbCritical Or vbOKOnly, Caption
            TXT_COVER.SetFocus
            Exit Sub
        End If
    End If

    Set objFaxServer = CreateObject("FaxServer.FaxServer")
    objFaxServer.Connect (TXT_SERVER.Text)
    Set objFaxDoc = objFaxServer.CreateDocument(TXT_FILE.Text)
    
    objFaxDoc.FaxNumber = TXT_NUMERO.Text
    objFaxDoc.RecipientName = TXT_DESTINATARIO.Text
    
    If (CHK_COVER.value = 1) Then
        objFaxDoc.SendCoverPage = 1
        objFaxDoc.CoverPageName = TXT_COVER.Text
        objFaxDoc.CoverPAgeSubject = TXT_OGGETTO.Text
        objFaxDoc.CoverPageNote = TXT_NOTE.Text
    End If
    objFaxDoc.Send
       
    Set objFaxDoc = Nothing
    
    objFaxServer.Disconnect
    
    Set objFaxServer = Nothing
Exit Sub
ErrTrap:
    Select Case MsgBox("Errore:(" & Err.Number & ")" & Err.Description, vbAbortRetryIgnore Or vbCritical, Caption)
        Case vbRetry
            Resume
        Case vbAbort
            If (Not objFaxDoc Is Nothing) Then Set objFaxDoc = Nothing
            If (Not objFaxServer Is Nothing) Then Set objFaxServer = Nothing
            Exit Sub
        Case vbIgnore
            Resume Next
    End Select

End Sub

Private Sub Command3_Click()
CommonDialog.Filter = "Documenti Word|*.doc|Acrobat reader|*.pdf"
CommonDialog.ShowOpen
TXT_FILE.Text = CommonDialog.FileName
End Sub

Private Sub Command2_Click()
CommonDialog.Filter = "Cover Pages|*.cov"
CommonDialog.ShowOpen
TXT_COVER.Text = CommonDialog.FileName

End Sub

Private Sub Form_Load()

TXT_SERVER.Text = GetSetting(App.EXEName, "INPUT", "SERVER")
If (RTrim(TXT_SERVER.Text) <= "") Then
    TXT_SERVER.Text = ComputerName
End If
TXT_FILE.Text = GetSetting(App.EXEName, "INPUT", "FILE")
TXT_NUMERO.Text = GetSetting(App.EXEName, "INPUT", "NUMERO")
CHK_COVER.value = 0
DisabilitaControlli False
End Sub

Private Sub Form_Unload(Cancel As Integer)
    
    SaveSetting App.EXEName, "INPUT", "SERVER", TXT_SERVER.Text
    SaveSetting App.EXEName, "INPUT", "FILE", TXT_FILE.Text
        SaveSetting App.EXEName, "INPUT", "NUMERO", TXT_NUMERO.Text

End Sub

Manipolare un documento Word da Visual Basic

Codice utile per aprire o creare un modello di Word da Visual Basic e inserirvi del testo passato dall’applicazione VB. Anzitutto è necessario creare un file modello chiamandolo appunto modello.dot e creare all'interno di esso 4 bookmark di nome a,b,c,d. Creare poi in vb un form con tre campi di testo e 6 pulsanti ed incollare il codice seguente.
Tip fornito dal sig. C.Calabrò

Private Sub Command1_Click()
    On Error GoTo Errore
        'definisce che oggetto è objWord (in questo caso è una nuova applicazione Word)
        Dim objWord As Word.Application
        'definisce che oggetto è objDoc (in questo caso è un nuovo documento Word)
        Dim objDoc As Word.Document
        'ora che objWord è dichiarato si vuole effettivamente 'aprire questa nuova applicazione Word
        Set objWord = New Word.Application
        'ora che objDoc è dichiarato si vuole effettivamente 'aprire questo nuovo documento
        Set objDoc = objWord.Documents.Add(app.path & "\Modello.dot")
        
        'si rende visibile Word
        objWord.Visible = True
        'rende attivo il documento appena creato
        objDoc.Activate
        objDoc.Save
Errore:
    MsgBox "Il salvataggio è necessario", vbExclamation, "Cristiano Calabrò"
End Sub

Private Sub Command2_Click()
    Dim objWord As Word.Application
    Dim objDoc As Word.Document
    Set objWord = New Word.Application
    Set objDoc = objWord.Documents.Add(App.Path & "\Modello.dot")

    objWord.Visible = True
    objDoc.Activate
    objDoc.Bookmarks("a").Range = Text1.Text
    objDoc.Bookmarks("b").Range = Text2.Text
    objDoc.Bookmarks("c").Range = Text3.Text
    objDoc.Bookmarks("d").Range = Date & " - Segnalibro d"
    objDoc.PrintPreview
End Sub

Private Sub Command4_Click()
    Dim objWord As Word.Application
    Dim objDoc As Word.Document
    Set objWord = New Word.Application
    Set objDoc = objWord.Documents.Add(App.Path & "\Modello.dot")
    objWord.Visible = True
    objDoc.Activate
    objDoc.PrintOut
    objWord.Quit (False)
End Sub

Private Sub Command5_Click()
    Dim objWord As Word.Application
    Dim objDoc As Word.Document
    Set objWord = New Word.Application
    Set objDoc = objWord.Documents.Add
    objWord.Visible = True
    objDoc.Activate
    objDoc.Save
End Sub

Private Sub Doc_Click()
    Dim objWord As Word.Application
    Dim objDoc As Word.Document
    Set objWord = New Word.Application
    Set objDoc = objWord.Documents.Add
    objWord.Visible = True
    objDoc.Activate
End Sub

Private Sub Form_Load()
    Text1.Text = "Segnalibro a"
    Text2.Text = "Segnalibro b"
    Text3.Text = "Segnalibro c"
End Sub

Private Sub Mod_Click()
    Dim objWord As Word.Application
    Dim objDoc As Word.Document
    Set objWord = New Word.Application
    Set objDoc = objWord.Documents.Open(App.Path & "\Modello.dot")
    objWord.Visible = True
    objDoc.Activate
End Sub